package la.iok.hzsvn.lewin.movie.core.model;

import la.iok.hzsvn.share.tools.exception.SystemException;

import java.util.Date;
import java.util.UUID;

/**
 * 二维码基础信息
 * @since 1.1.1
 */
public class QRCodeBaseInfo {
    /**
     * 二维码id
     */
    private String uuid;
    /**
     * 失效日期
     */
    private Date expiredTime;

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public Date getExpiredTime() {
        return expiredTime;
    }

    public void setExpiredTime(Date expiredTime) {
        this.expiredTime = expiredTime;
    }

    /**
     * 生成对应类型的二维码信息对象。
     * @param cls 对象类,默认构造需要能调用
     * @param expiredTime 过期时间
     * @param <T> 对象类型
     * @return 二维码信息对象
     */
    public static <T extends QRCodeBaseInfo> T generateQrCodeInfo(Class<T> cls,Date expiredTime) {
        try {
            T qrCode = cls.newInstance();
            qrCode.setUuid(UUID.randomUUID().toString());
            qrCode.setExpiredTime(expiredTime);
            return qrCode;
        } catch (InstantiationException | IllegalAccessException e) {
            throw new SystemException("创建二维码实例失败",e);
        }
    }
}
